from ninja import Schema
from typing import Optional

class LoginIn(Schema):
    username: str
    password: str

class LoginOut(Schema):
    api_key: str
    expiry: int

class ChatIn(Schema):
    session_id: str = "default_session"
    user_input: str
    use_workflow: bool = False  # 是否使用工作流模式（LLM自主决定工具调用次数）

class ChatOut(Schema):
    reply: str
    use_workflow: Optional[bool] = False  # 是否使用了工作流
    tools_used: Optional[list] = None  # 使用的工具列表
    workflow_steps: Optional[int] = None  # 工作流步骤数
    tool_calls: Optional[list] = None  # 完整的工具调用详情（包含thought）

class WorkflowChatOut(Schema):
    """工作流模式的详细输出"""
    reply: str
    use_workflow: bool = True
    tools_used: list = []
    workflow_steps: int = 0
    retrieved_logs_count: int = 0
    tool_calls_detail: Optional[list] = None  # 工具调用详情

class HistoryOut(Schema):
    history: str

class ErrorResponse(Schema):
    error: str
